function VerifySquenceOfBST(sequence)
{
    // write code here
    // 定义一个递归函数 给定参数 i,j 分别标定左右边界 判断数组 sequence[i:j] 这个范围内是不是二叉搜索树的遍历序列
    function verify(i,j){
      if(i>=j){ // 这就说明数组中的元素 只有1个 那就直接返回true
        return true
      }
      // 否则的话我们使用一个下标 将其初始化为左边界
      var index = i
      // 只要这个下标指向的元素 是比 根节点的值 (数组中的最后一个元素) 小的话 我们就把下标++
      while(sequence[index] < sequence[j]){
        index++
      }
      // 跳出循环的是 index指向的元素是比根节点的值大的 那么这个指向的就是右子树的位置
      // 定义一个下标 保存右子树的起始位置
      var right = index
      // 到此位置确保了数组当中从i开始知道right-1 中的所有树都是比根节点的值小的 所以这一部分就是左子树
      // 接下来要检查 剩下的元素 是不是都比根节点的值大 也就是 剩下的部分是不是右子树
      while(sequence[index] > sequence[j]){
        index++
      }
      // 最后如果说这一部分所有的值都比根节点的值大的话 我们最后 判断index 是不是等于 原有数组的有边界j
      // 并且递归的判断他的左子树 和右子树是不是满足这个要求
      return index === j && verify(i,right-1) && verify(right,j-1) // 这里的区间都是闭区间 verify(right,j-1) 这个j-1 是因为最后一个数已经是作为根节点被去除了
    }
    if(sequence.length === 0) return false
    return verify(0,sequence.length-1) // 这里返回最外面数组的左右边界
}
module.exports = {
    VerifySquenceOfBST : VerifySquenceOfBST
};